www.gusucode.com > matlab从零到进阶程序与数据 > matlab从零到进阶程序与数据/第10章 数值积分计算/ParaInteDemo.m
function ParaInteDemo %{ 方法1:num2str+inline %} clear all k=linspace(0,5); y = zeros(1,length(k)); for i=1:length(k) kk=k(i); fun=strcat('sin(',num2str(kk),'*x).*x.^2'); y(i)=quadl(inline(fun),1,5); end plot(k,y) %================= %方法2:匿名函数实现 %================= f = @(k) quad(@(x) sin(k.*x).*x.^2,0,5); kk = linspace(0,5); y = zeros(size(kk)); for ii = 1:length(kk) y(ii) = f(kk(ii)); end plot(kk,y) %================= %方法3:嵌套函数实现 %================= function y = ParaIntDemo(k) function f = f(x) f = sin(k.*x).*x.^2; end %上面是以嵌套函数的形式表示的f,也可以用匿名函数来表示f:即f = @(x) sin(k.*x).*x.^2;, %当f无法简单表示的时候,只能采用嵌套函数了. y = quadl(@f,1,5); end kk = linspace(0,5); y=zeros(size(kk)); for ii=1:length(kk) y(ii) = ParaIntDemo(kk(ii)); end plot(kk,y) %========================= %方法4:积分函数本身传递参数 %========================= kk = linspace(0,5); y = zeros(size(kk)); for ii = 1:length(kk) y(ii) = quad(@(x,k) sin(k.*x).*x.^2,0,5,[],[],kk(ii)); end end